// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.x52im.rbchat.logic.chat_friend.gift;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.PopupWindow;

import com.eva.android.widget.ChoiceItemPopWindow;
import com.x52im.rbchat.R;
import com.x52im.rbchat.logic.qrcode.utils.StatusBarUtils;

/**
 * 礼品工具主窗口实现类.
 * 
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @since 2.5
 * @see GiftsToolsUIWraper
 */
public class GiftsToolsPopupWindow extends PopupWindow
{
	private View mMenuView;
	
	/** 礼品工具包装类 */
	private GiftsToolsUIWraper scensesToolsWrapper = null;
	/** 进行礼品交互的好友uid（当用于仅显示背包的使用模式时，本字段是null的） */
	private String parentFriendUID = null;
	/** 是否仅用于查看背包的使用模式：true表示是，否则表示不是 */
	private boolean userForPackageOnly = false;
	
	public GiftsToolsPopupWindow(boolean userForPackageOnly
			, final Activity activity, String parentFriendUID)
	{
		super(activity);

		// @since5.1：用于解决Android 5.0及以上版本中，popupWindow不能覆盖状态栏的问题（主要是留海屏下太难看）
		ChoiceItemPopWindow.fitPopupWindowOverStatusBar(this);

		this.userForPackageOnly = userForPackageOnly;
		this.parentFriendUID = parentFriendUID;
		
		LayoutInflater inflater = (LayoutInflater) activity
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		mMenuView = inflater.inflate(R.layout.chatting_gift_main_popup, null);
		
		//
		initContentViewComponents(mMenuView);
		
		// 设置SelectPicPopupWindow的View
		this.setContentView(mMenuView);
		// 设置SelectPicPopupWindow弹出窗体的宽
		this.setWidth(LayoutParams.FILL_PARENT);
		// 设置SelectPicPopupWindow弹出窗体的高
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
			// @since6.0：用于解决Android 5.0及以上版本中，popupWindow不能覆盖状态栏的问题（主要是留海屏下太难看）
			setHeight(activity.getWindowManager().getDefaultDisplay().getHeight()+ StatusBarUtils.getStatusBarHeight(activity));// 【1/3】
		}
		else {
			this.setHeight(LayoutParams.WRAP_CONTENT);
		}
		// 设置SelectPicPopupWindow弹出窗体可点击
		this.setFocusable(true);
		// 设置SelectPicPopupWindow弹出窗体动画效果
		this.setAnimationStyle(R.style.widget_choice_item_popup_AnimBottom);
		// 实例化一个ColorDrawable颜色为半透明
		ColorDrawable dw = new ColorDrawable(0xb0000000);
		// 设置SelectPicPopupWindow弹出窗体的背景
		this.setBackgroundDrawable(dw);
		
		// mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
		mMenuView.setOnTouchListener(createCancelOnTouchOutOfMenuListener());
		
		// 以下两行代码将在输入法已经显示的情况下，打开弹窗时能自动隐藏输入法（否则输入法会挡住弹窗）
		setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);         
		setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
		
		//
		scensesToolsWrapper = new GiftsToolsUIWraper(userForPackageOnly, activity, parentFriendUID){
			@Override
			protected View findViewById(int resId)
			{
				return mMenuView.findViewById(resId);
			}

			@Override
			protected void closeUI()
			{
				// 销毁弹出框
				dismiss();
			}
		};
	}
	
	protected void initContentViewComponents(View mMenuView)
	{
//		btn_take_photo = (Button) mMenuView.findViewById(R.id.chatting_list_view_sendpic_choice_dialog_btn_take_photo);
//		btn_pick_photo = (Button) mMenuView.findViewById(R.id.chatting_list_view_sendpic_choice_dialog_btn_pick_photo);
//		btn_cancel = (Button) mMenuView.findViewById(R.id.chatting_list_view_sendpic_choice_dialog_btn_cancel);
//		// 取消按钮
//		btn_cancel.setOnClickListener(createCancelClickListener());
//		// 设置按钮监听
//		btn_pick_photo.setOnClickListener(mItemsOnClick);
//		btn_take_photo.setOnClickListener(mItemsOnClick);
	}
	
	/**
	 * 载入礼品数据.
	 * <p>
	 * 此主法必须被调用，否则礼品工具的数据不会被加载.
	 */
	public void loadGiftsData()
	{
		scensesToolsWrapper.loadAllDataAsync(GiftsProvider.getIntance().getGiftsMeta(false)
				, GiftsProvider.getIntance().getGiftInPackageMeta(false, this.getContentView().getContext()));
	}
	
	/**
	 * 点击空白处关闭整个窗口。
	 * 
	 * @return
	 */
	protected OnTouchListener createCancelOnTouchOutOfMenuListener()
	{
		return new OnTouchListener()
		{
			public boolean onTouch(View v, MotionEvent event)
			{
				int height = mMenuView.findViewById(R.id.chatting_gift_main_popup_popupContentLL).getTop();
				int y = (int) event.getY();
				if (event.getAction() == MotionEvent.ACTION_UP)
				{
					if (y < height)
					{
						dismiss();
					}
				}
				return true;
			}
		};
	}
	
	protected OnClickListener createCancelClickListener()
	{
		return new OnClickListener()
		{
			public void onClick(View v)
			{
				// 销毁弹出框
				dismiss();
			}
		};
	}
	
	/**
	 * 本方法将在父Activity resume时被调用.
	 */
	public void forParentResume()
	{
		scensesToolsWrapper.onParentResume();
	}
	/**
	 * 本方法将在父Activity pause时被调用.
	 */
	public void forParentPause()
	{
		scensesToolsWrapper.onParentPause();
	}
	
	public void forParentAvtivityResult()
	{
		scensesToolsWrapper.loadScoreDataAsync();
	}
}
